package cn.csc.module.order.controller.admin.returns.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.math.BigInteger;

/**
* 订单退换货 Base VO，提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
*/
@Data
public class OrderReturnsBaseVO {

    @ApiModelProperty(value = "退货编号 供客户查询", required = true)
    @NotNull(message = "退货编号 供客户查询不能为空")
    private String returnsNo;

    @ApiModelProperty(value = "订单编号", required = true)
    @NotNull(message = "订单编号不能为空")
    private BigInteger orderId;

    @ApiModelProperty(value = "物流单号")
    private String expressNo;

    @ApiModelProperty(value = "收货人姓名", required = true)
    @NotNull(message = "收货人姓名不能为空")
    private String consigneeRealname;

    @ApiModelProperty(value = "联系电话", required = true)
    @NotNull(message = "联系电话不能为空")
    private String consigneePhone;

    @ApiModelProperty(value = "备用联系电话", required = true)
    @NotNull(message = "备用联系电话不能为空")
    private String consigneePhoneSpare;

    @ApiModelProperty(value = "收货地址", required = true)
    @NotNull(message = "收货地址不能为空")
    private String consigneeAddress;

    @ApiModelProperty(value = "邮政编码", required = true)
    @NotNull(message = "邮政编码不能为空")
    private String consigneeZip;

    @ApiModelProperty(value = "物流方式", required = true)
    @NotNull(message = "物流方式不能为空")
    private String logisticsType;

    @ApiModelProperty(value = "物流发货运费", required = true)
    @NotNull(message = "物流发货运费不能为空")
    private BigDecimal logisticsFee;

    @ApiModelProperty(value = "物流状态")
    private Integer orderLogisticsStatus;

    @ApiModelProperty(value = "物流结算状态")
    private Integer logisticsSettlementStatus;

    @ApiModelProperty(value = "物流最后状态描述")
    private String logisticsResultLast;

    @ApiModelProperty(value = "物流描述")
    private String logisticsResult;

    @ApiModelProperty(value = "发货时间")
    private Integer logisticsCreateTime;

    @ApiModelProperty(value = "物流更新时间")
    private Integer logisticsUpdateTime;

    @ApiModelProperty(value = "物流结算时间")
    private Integer logisticsSettlementTime;

    @ApiModelProperty(value = "0全部退单 1部分退单", required = true)
    @NotNull(message = "0全部退单 1部分退单不能为空")
    private Byte returnsType;

    @ApiModelProperty(value = "PUPAWAY:退货入库;REDELIVERY:重新发货;RECLAIM-REDELIVERY:不要求归还并重新发货; REFUND:退款; COMPENSATION:不退货并赔偿", required = true)
    @NotNull(message = "PUPAWAY:退货入库;REDELIVERY:重新发货;RECLAIM-REDELIVERY:不要求归还并重新发货; REFUND:退款; COMPENSATION:不退货并赔偿不能为空")
    private String handlingWay;

    @ApiModelProperty(value = "退款金额", required = true)
    @NotNull(message = "退款金额不能为空")
    private BigDecimal returnsAmount;

    @ApiModelProperty(value = "退货申请时间", required = true)
    @NotNull(message = "退货申请时间不能为空")
    private Integer returnSubmitTime;

    @ApiModelProperty(value = "退货处理时间", required = true)
    @NotNull(message = "退货处理时间不能为空")
    private Integer handlingTime;

    @ApiModelProperty(value = "退货原因", required = true)
    @NotNull(message = "退货原因不能为空")
    private String remark;

}
